package Day11.试题程序;

import java.util.Arrays;

/**
 * @author HYHwtx
 * @version 1.0
 * @date 2022/2/17 15:28
 */
//去除数组{1,3,1,4,2,3,6,1,5}中的重复项,
// 存入一个新的数组,并从大到小排序.
public class Test10 {
    public static void main(String[] args) {
        int[] arr = {1,3,1,4,2,3,6,1,5};
        System.out.println("数组去重前：" + Arrays.toString(arr));

        int[] newArr = deleteRepeat(arr);
        System.out.println("数组去重后：" + Arrays.toString(newArr));
    }

    public static int[] deleteRepeat(int[] arr) {
        int[] Arr = new int[arr.length];
        // 先对原数组进行排序
        Arrays.sort(arr);
        // 为新数组声明一个索引
        int a = 0;
        for (int i = 0; i < arr.length; i++) {
            // 声明一个boolean类型的标记，每次都要进行重置
            boolean xiabiao = true;
            // 嵌套内层循环将原数组元素逐个比较，每次比较都是前一个元素与后一个元素的比较(i ：i+1)
            for (int j = i + 1; j < arr.length; j++) {
                // 判断元素值是否重复，若重复判断为false，则跳出当前层循环，不保存重复的元素值
                if (arr[i] == arr[j]) {
                    xiabiao = false;
                    break;
                }
            }
            // 判断的结果，若xiabiao = true成立，将原数组元素赋给新数组，并且赋值完成之后下标自增
            if (xiabiao) {
                Arr[a] = arr[i];
                a ++;
            }
        }

        // (这一步的意义是因为，如果直接传回去重后的数组得到的值是[1, 3, 4, 5, 6, 7, 9, 0, 0, 0, 0] 有0 就很难看，重新拷贝之后将多余的默认值删去)
        int[] newarrs = Arrays.copyOfRange(Arr, 0, a);

        // 返回数组
        return newarrs;

    }
    }

